package com.ash.mapper.chart;

import com.ash.domain.Chart;

import com.ash.domain.vo.ChartVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.lang.Nullable;

import java.util.List;

/**
 * @author : Chen Chao
 * @encoding : UTF-8
 * @date : 2021/4/12 15:49
 * @file : project06.com.ash.mapper.chart.ChartMapper.java
 * @software : IntelliJ IDEA
 * @since : 1.8
 */
public interface ChartMapper {
    /**
     * 根据uid进行购物车查询
     * @param uid uid
     * @param startIndex 开始下标
     * @param limit  每页容量
     * @param order 排序规则
     * @return 返回购物车列表
     */
    List<ChartVo> selectByUid(
            @Param("uid")Integer uid,
            @Nullable @Param ("startIndex")Integer startIndex,
            @Nullable@Param("limit")Integer limit,
            @Nullable@Param("order")String order);

    /**
     * 查询用户购物车下数据总数
     * @param uid uid
     * @return 返回数据总数
     */
    Integer selectDataCount(@Param("uid")Integer uid);

    /**
     * 根据bids进行批量删除
     * @param uid 用户id
     * @param bids 要删除的bids
     * @return 受影响的行数
     */
    Integer deleteByBids(@Param("uid")Integer uid,@Param("bids")List<Integer> bids);

    /**
     * 添加到购物车
     * @param chart chart
     * @return 受影响的行数
     */
    Integer add(Chart chart);

    /**
     * 根据bid查询购物车
     * @param bid bid
     * @param uid uid
     * @return 返回购物车
     */
    Chart selectByBid(@Param("uid")Integer uid,@Param("bid")Integer bid);

    /**
     * 设置指定条目的数量
     * @param chart chart
     * @return 受影响的行数
     */
    Integer setCount(Chart chart);
    /**
     * 根据bids进行批量删除
     * @param uid 用户id
     * @param bid 要删除的bid
     * @return 受影响的行数
     */
    Integer deleteByBid(@Param("uid")Integer uid,@Param("bid")Integer bid);

    /**
     * 根据uid 和 book ids查询chart
     * @param uid  uid
     * @param ids ids
     * @return chart列表
     */
    List<ChartVo> selectByUidAndBids(@Param("uid")Integer uid,@Param("ids")List<Integer> ids);
}
